/*
 *  WaveData.h
 *  glare
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __WaveData__
#define __WaveData__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Engine)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented WaveData interface.
	class WaveData : public Resource
	{
  public:		
		// constructor
		WaveData(const CHAR* name);
		
		// destructor
		virtual ~WaveData();

    // load the data
    VOID Load(const GData* data);

    // get the audio buffer of the wave
    const AudioBuffer* Buffer() const;

    // get the duration of the wave
    F32 Duration() const;

  private:
    AudioBufferPtr mBufferPtr;
    F32 mDuration;
  
  private:friend class Resource;
	};

  //////////////////////////////////////////////////////////////////////////

  typedef GPtr<WaveData>WaveDataPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __WaveData__

//////////////////////////////////////////////////////////////////////////